@苏苏
2年前 提问
1个回答

文件上传有哪些防护方式

上官雨宝
2年前

文件上传的防护方法有以下这些:

  • 文件上传的目录设置为不可执行:最有效的,将文件上传目录直接设置为不可执行,对于Linux而言,撤销其目录的’x’权限;实际中很多大型网站的上传应用都会放置在独立的存储上作为静态文件处理,一是方便使用缓存加速降低能耗,二是杜绝了脚本执行的可能性。

  • 判断文件类型:在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

  • 使用随机数改写文件名和文件路径:文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

  • 单独设置文件服务器的域名:由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

  • 限制用户上传文件的类型:指定用户在上传时所上传的文件格式和类型,如果不符合这个格式则不允许上传,并在上传后要对文件的后缀名进行检验,防止攻击者双后缀名绕过。